home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2001 May / SGI IRIX Base Documentation 2001 May.iso / usr / share / catman / p_man / cat3 / librw / RWTValHashMultiMap.z / RWTValHashMultiMap
Encoding:
Text File  |  1998-10-30  |  23.1 KB  |  595 lines

  1.  
  2.  
  3.  
  4. RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp((((3333CCCC++++++++))))                              RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp((((3333CCCC++++++++))))
  5.  
  6.  
  7.  
  8. NNNNaaaammmmeeee
  9.      RWTValHashMultiMap<K,T,H,EQ> - Rogue Wave library class
  10.  
  11. SSSSyyyynnnnooooppppssssiiiissss
  12.               #include <rw/tvhmmap.h>
  13.           RWTValHashMultiMap<K,T,H,EQ> m;
  14.  
  15.  
  16.  
  17. SSSSttttaaaannnnddddaaaarrrrdddd CCCC++++++++ LLLLiiiibbbbrrrraaaarrrryyyy DDDDeeeeppppeeeennnnddddeeeennnntttt!!!!
  18.  
  19.  
  20.  
  21.      RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp requires the Standard C++ Library.
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28. DDDDeeeessssccccrrrriiiippppttttiiiioooonnnn
  29.      This class maintains a collection of keys, each with an associated item
  30.      of type TTTT.  These pairs are stored according to a hash object of type HHHH.
  31.      HHHH must provide a hash function on elements of type KKKK via a public member
  32.         uuuunnnnssssiiiiggggnnnneeeedddd lllloooonnnngggg ooooppppeeeerrrraaaattttoooorrrr(((())))((((ccccoooonnnnsssstttt KKKK&&&& xxxx)))) ccccoooonnnnsssstttt Equivalent keys within the
  33.      collection will be grouped together based on an equality object of type
  34.      EEEEQQQQ.  EEEEQQQQ must ensure this grouping via public member
  35.         bbbboooooooollll ooooppppeeeerrrraaaattttoooorrrr(((())))((((ccccoooonnnnsssstttt KKKK&&&& xxxx,,,, ccccoooonnnnsssstttt KKKK&&&& yyyy)))) ccccoooonnnnsssstttt which should return ttttrrrruuuueeee
  36.      if xxxx and yyyy are equivalent.  RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp<<<<KKKK,,,,TTTT,,,,HHHH,,,,EEEEQQQQ>>>> may contain
  37.      multiple keys that compare equal to each other.  (RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMaaaapppp<<<<KKKK,,,,TTTT,,,,HHHH,,,,EEEEQQQQ>>>>
  38.      will not accept a key that compares equal to any key already in the
  39.      collection.)  Equality is based on the comparison object and not on the
  40.      ======== operator.
  41.  
  42. PPPPeeeerrrrssssiiiisssstttteeeennnncccceeee
  43.      Isomorphic.
  44.  
  45. EEEExxxxaaaammmmpppplllleeeessss
  46.               //
  47.  
  48.  
  49.  
  50.               // tvhmmrat.cpp
  51.           //
  52.           #include<rw/tvhmmap.h>
  53.           #include<iostream.h>
  54.           #include<rw/cstring.h>
  55.           struct silly_hash{
  56.              unsigned long operator()(RWCString x) const
  57.              { return x.length() * (long)x[0]; }
  58.           };
  59.           int main(){
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp((((3333CCCC++++++++))))                              RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp((((3333CCCC++++++++))))
  71.  
  72.  
  73.  
  74.             RWCString trd = "Third";
  75.             RWTValHashMultiMap<RWCString,int,silly_hash,equal_to<RWCString> >
  76.                  contest;
  77.             contest.insert("First", 7);
  78.             contest.insert(trd,3);
  79.  
  80.  
  81.  
  82.  
  83.  
  84.        contest.insert(trd,6);      // sssseeeellllffff contains two distinct values
  85.  
  86.                                             //equivalent to ttttrrrrdddd
  87.  
  88.  
  89.  
  90.                 contest.insert("Second",2);
  91.             contest.resize(8);
  92.             cout << "The table is " << contest.fillRatio() * 100.0
  93.                  << "% full<< endl;
  94.             return 0;
  95.           }
  96.  
  97.           Program Output:
  98.  
  99. RRRReeeellllaaaatttteeeedddd CCCCllllaaaasssssssseeeessss
  100.      The table is 50% full
  101.  
  102.  
  103.      Class RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMaaaapppp<<<<KKKK,,,,TTTT,,,,HHHH,,,,EEEEQQQQ>>>> offers the same interface to a collection
  104.      that will not accept multiple keys that compare equal to each other.
  105.      Class rrrrwwww____hhhhaaaasssshhhhmmmmuuuullllttttiiiimmmmaaaapppp<<<<KKKK,,,,TTTT,,,,HHHH,,,,EEEEQQQQ>>>> is the C++-standard collection that
  106.      serves as the underlying implementation for this collection.
  107.  
  108. PPPPuuuubbbblllliiiicccc TTTTyyyyppppeeeeddddeeeeffffssss
  109.               typedef rw_hashmultimap<K,T,H,EQ>              container_type;
  110.           typedef container_type::iterator               iterator;
  111.           typedef container_type::const_iterator         const_iterator;
  112.           typedef container_type::size_type              size_type;
  113.           typedef pair <const K,T>                       value_type;
  114.           typedef pair <const K,T>&                      reference;
  115.           typedef const pair<const K,T>&                 const_reference;
  116.  
  117.  
  118.  
  119. PPPPuuuubbbblllliiiicccc CCCCoooonnnnssssttttrrrruuuuccccttttoooorrrrssss
  120.               RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp<<<<KKKK,,,,TTTT,,,,HHHH,,,,EEEEQQQQ>>>>();
  121.  
  122.  
  123.      Constructs an empty map.
  124.  
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp((((3333CCCC++++++++))))                              RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp((((3333CCCC++++++++))))
  137.  
  138.  
  139.  
  140.               RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp<<<<KKKK,,,,TTTT,,,,HHHH,,,,EEEEQQQQ>>>>
  141.           (const rw_hashmultimap<K,T,H,EQ>& m);
  142.  
  143.  
  144.      Constructs a map by copying all elements of mmmm.
  145.  
  146.               RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp<<<<KKKK,,,,TTTT,,,,HHHH,,,,EEEEQQQQ>>>>
  147.           (const RWTValHashMultiMap<K,T,H,EQ>& rwm);
  148.  
  149.  
  150.      Copy constructor.
  151.  
  152.               RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp<<<<KKKK,,,,TTTT,,,,HHHH,,,,EEEEQQQQ>>>>
  153.           (const value_type* first, const value_type* last);
  154.  
  155.  
  156.      Constructs a map by copying elements from the array of association pairs
  157.      pointed to by ffffiiiirrrrsssstttt, up to, but not including, the association pointed to
  158.      by llllaaaasssstttt.
  159.  
  160. PPPPuuuubbbblllliiiicccc MMMMeeeemmmmbbbbeeeerrrr OOOOppppeeeerrrraaaattttoooorrrrssss
  161.               RWTValHashMultiMap<K,T,H,EQ>&
  162.           ooooppppeeeerrrraaaattttoooorrrr====(const RWTValHashMultiMap<K,T,H,EQ>& m);
  163.           RWTValHashMultiMap<K,T,H,EQ>&
  164.           ooooppppeeeerrrraaaattttoooorrrr====(const rw_hashmultimap<K,T,H,EQ>& m);
  165.  
  166.  
  167.      Destroys all elements of self and replaces them by copying all
  168.      associations from mmmm.
  169.  
  170.               bool
  171.           ooooppppeeeerrrraaaattttoooorrrr========(const RWTValHashMultiMap<K,T,H,EQ>& m) const;
  172.           bool
  173.           ooooppppeeeerrrraaaattttoooorrrr========(const rw_hashmultimap<K,T,H,EQ>& m) const;
  174.  
  175.  
  176.      Returns ttttrrrruuuueeee if self compares equal to mmmm, otherwise returns ffffaaaallllsssseeee.  Two
  177.      collections are equal if both have the same number of entries, and
  178.      iterating through both collections produces, in turn, individual keys
  179.      that compare equal to each other.
  180.  
  181. PPPPuuuubbbblllliiiicccc MMMMeeeemmmmbbbbeeeerrrr FFFFuuuunnnnccccttttiiiioooonnnnssss
  182.               void
  183.           aaaappppppppllllyyyy(void (*fn)(const K&, T&, void*),void* d);
  184.           void
  185.           aaaappppppppllllyyyy(void (*fn)(const K&,const T&, void*), void* d) const;
  186.  
  187.  
  188.      Applies the user-defined function pointed to by ffffnnnn to every association
  189.      in the collection.  This function must have one of the prototypes:
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202. RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp((((3333CCCC++++++++))))                              RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp((((3333CCCC++++++++))))
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.                  void yourfun(const K&, T& a, void* d);
  211.              void yourfun(const K&, const T& a,void* d);
  212.  
  213.  
  214.      Client data may be passed through parameter dddd.
  215.  
  216.               void
  217.           aaaappppppppllllyyyyTTTTooooKKKKeeeeyyyyAAAAnnnnddddVVVVaaaalllluuuueeee(void (*fn)(const K&, T&, void*),void* d);
  218.           void
  219.           aaaappppppppllllyyyyTTTTooooKKKKeeeeyyyyAAAAnnnnddddVVVVaaaalllluuuueeee
  220.           (void (*fn)(const K&,const T&,void*), void* d) const;
  221.  
  222.  
  223.      This is a deprecated version of the aaaappppppppllllyyyy member above.  It behaves
  224.      exactly the same as aaaappppppppllllyyyy....
  225.  
  226.               iterator
  227.           bbbbeeeeggggiiiinnnn();
  228.           const_iterator
  229.           bbbbeeeeggggiiiinnnn() const;
  230.  
  231.  
  232.      Returns an iterator positioned at the first pair in self.
  233.  
  234.               size_type
  235.           ccccaaaappppaaaacccciiiittttyyyy() const;
  236.  
  237.  
  238.      Returns the number of buckets(slots) available in the underlying hash
  239.      representation.  See rrrreeeessssiiiizzzzeeee below.
  240.  
  241.               void
  242.           cccclllleeeeaaaarrrr();
  243.  
  244.  
  245.      Clears the collection by removing all items from self.  Each key and its
  246.      associated item will have its destructor called.
  247.  
  248.               bool
  249.           ccccoooonnnnttttaaaaiiiinnnnssss(const K& key) const;
  250.  
  251.  
  252.      Returns ttttrrrruuuueeee if there exists a key jjjj in self that compares equal to kkkkeeeeyyyy,
  253.      otherwise returns ffffaaaallllsssseeee.
  254.  
  255.               bool
  256.           ccccoooonnnnttttaaaaiiiinnnnssss
  257.           (bool (*fn)(const_reference,void*), void* d) const;
  258.  
  259.  
  260.  
  261.                                                                         PPPPaaaaggggeeee 4444
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268. RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp((((3333CCCC++++++++))))                              RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp((((3333CCCC++++++++))))
  269.  
  270.  
  271.  
  272.      Returns ttttrrrruuuueeee if there exists an association aaaa in self such that the
  273.      expression ((((((((****ffffnnnn))))((((aaaa,,,,dddd)))))))) is ttttrrrruuuueeee, otherwise returns ffffaaaallllsssseeee.  ffffnnnn points to a
  274.      user-defined tester function which must have prototype:
  275.  
  276.  
  277.  
  278.  
  279.  
  280.                  bool yourTester(const_reference a, void* d);
  281.  
  282.  
  283.      Client data may be passed through parameter dddd.
  284.  
  285.               iterator
  286.           eeeennnndddd();
  287.           const_iterator
  288.           eeeennnndddd() const;
  289.  
  290.  
  291.      Returns an iterator positioned "just past" the last association in self.
  292.  
  293.               size_type
  294.           eeeennnnttttrrrriiiieeeessss() const;
  295.  
  296.  
  297.      Returns the number of associations in self.
  298.  
  299.               float
  300.           ffffiiiillllllllRRRRaaaattttiiiioooo() const;
  301.  
  302.  
  303.      Returns the ratio eeeennnnttttrrrriiiieeeessss(((())))/ccccaaaappppaaaacccciiiittttyyyy(((()))).
  304.  
  305.               bool
  306.           ffffiiiinnnndddd(const K& key, Key& r) const;
  307.  
  308.  
  309.      If there exists a key jjjj in self that compares equal to kkkkeeeeyyyy, assigns jjjj to
  310.      rrrr and returns ttttrrrruuuueeee.  Otherwise, returns ffffaaaallllsssseeee and leaves the value of rrrr
  311.      unchanged.
  312.  
  313.               bool
  314.           ffffiiiinnnndddd (bool (*fn)(const_reference,void*),
  315.                 void* d,pair<K,T>& r) const;
  316.  
  317.  
  318.      If there exists an association aaaa in self such that the expression
  319.      ((((((((****ffffnnnn))))((((aaaa,,,,dddd)))))))) is ttttrrrruuuueeee, assigns aaaa to rrrr and returns ttttrrrruuuueeee.  Otherwise,
  320.      returns ffffaaaallllsssseeee and leaves the value of kkkk unchanged. ffffnnnn points to a user-
  321.      defined tester function which must have prototype:
  322.  
  323.  
  324.  
  325.  
  326.  
  327.                                                                         PPPPaaaaggggeeee 5555
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334. RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp((((3333CCCC++++++++))))                              RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp((((3333CCCC++++++++))))
  335.  
  336.  
  337.  
  338.  
  339.  
  340.  
  341.  
  342.                  bool yourTester(const_reference a, void* d);
  343.  
  344.  
  345.      Client data may be passed through parameter dddd.
  346.  
  347.               bool
  348.           ffffiiiinnnnddddVVVVaaaalllluuuueeee(const K& key, T& r) const;
  349.  
  350.  
  351.      If there exists a key jjjj in self that compares equal to kkkkeeeeyyyy, assigns the
  352.      item associated with jjjj to rrrr and returns ttttrrrruuuueeee.  Otherwise, returns ffffaaaallllsssseeee
  353.      and leaves the value of rrrr unchanged.
  354.  
  355.               bool
  356.           ffffiiiinnnnddddKKKKeeeeyyyyVVVVaaaalllluuuueeee(const K& key, K& kr, T& tr) const;
  357.  
  358.  
  359.      If there exists a key jjjj in self that compares equal to kkkkeeeeyyyy, assigns jjjj to
  360.      kkkkrrrr, assigns the item associated with jjjj to trrrr,,,, and returns ttttrrrruuuueeee.
  361.      Otherwise, returns ffffaaaallllsssseeee and leaves the values of kkkkrrrr and ttttrrrr unchanged.
  362.  
  363.               bool
  364.           iiiinnnnsssseeeerrrrtttt(const K& key, const T& a);
  365.  
  366.  
  367.      Adds kkkkeeeeyyyy with associated item aaaa to the collection.  Returns ttttrrrruuuueeee.
  368.  
  369.               bool
  370.           iiiinnnnsssseeeerrrrttttKKKKeeeeyyyyAAAAnnnnddddVVVVaaaalllluuuueeee(const K& key, const T& a);
  371.  
  372.  
  373.      This is a deprecated version of the iiiinnnnsssseeeerrrrtttt member above.  It behaves
  374.      exactly the same as iiiinnnnsssseeeerrrrtttt.
  375.  
  376.               bool
  377.           iiiissssEEEEmmmmppppttttyyyy() const;
  378.  
  379.  
  380.      Returns ttttrrrruuuueeee if there are no items in the collection, ffffaaaallllsssseeee otherwise.
  381.  
  382.               size_type
  383.           ooooccccccccuuuurrrrrrrreeeennnncccceeeessssOOOOffff(const K& key) const;
  384.  
  385.  
  386.      Returns the number of keys jjjj in self that compares equal to kkkkeeeeyyyy.
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.                                                                         PPPPaaaaggggeeee 6666
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400. RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp((((3333CCCC++++++++))))                              RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp((((3333CCCC++++++++))))
  401.  
  402.  
  403.  
  404.               size_type
  405.           ooooccccccccuuuurrrrrrrreeeennnncccceeeessssOOOOffff
  406.           (bool (*fn)(const_reference,void*),void* d) const;
  407.  
  408.  
  409.      Returns the number of associations aaaa in self such that the
  410.      expression((((((((****ffffnnnn))))((((aaaa,,,,dddd)))))))) is ttttrrrruuuueeee.  ffffnnnn points to a user-defined tester
  411.      function which must have prototype:
  412.  
  413.  
  414.  
  415.  
  416.  
  417.                  bool yourTester(const_reference a, void* d);
  418.  
  419.  
  420.      Client data may be passed through parameter dddd.
  421.  
  422.               bool
  423.           rrrreeeemmmmoooovvvveeee(const K& key);
  424.  
  425.  
  426.      Removes the first association with key jjjj in self such that jjjj compares
  427.      equal to kkkkeeeeyyyy and returns ttttrrrruuuueeee.  Returns ffffaaaallllsssseeee if there is no such
  428.      association.
  429.  
  430.               bool
  431.           rrrreeeemmmmoooovvvveeee(bool (*fn)(const_reference,void*), void* d);
  432.  
  433.  
  434.      Removes the first association aaaa in self such that the expression
  435.      ((((((((****ffffnnnn))))((((aaaa,,,,dddd)))))))) is ttttrrrruuuueeee and returns ttttrrrruuuueeee.  Returns ffffaaaallllsssseeee if there is no such
  436.      element.  ffffnnnn points to a user-defined tester function which must have
  437.      prototype:
  438.  
  439.  
  440.  
  441.  
  442.  
  443.                  bool yourTester(const_reference a, void* d);
  444.  
  445.  
  446.      Client data may be passed through parameter dddd.
  447.  
  448.               size_type
  449.           rrrreeeemmmmoooovvvveeeeAAAAllllllll(const K& key);
  450.  
  451.  
  452.      Removes all associations with key jjjj in self where jjjj compares equal to
  453.      kkkkeeeeyyyy.  Returns the number of items removed.
  454.  
  455.  
  456.  
  457.  
  458.  
  459.                                                                         PPPPaaaaggggeeee 7777
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466. RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp((((3333CCCC++++++++))))                              RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp((((3333CCCC++++++++))))
  467.  
  468.  
  469.  
  470.               size_type
  471.           rrrreeeemmmmoooovvvveeeeAAAAllllllll(bool (*fn)(const_reference,void*), void* d);
  472.  
  473.  
  474.      Removes all associations aaaa in self such that the expression
  475.      ((((((((****ffffnnnn))))((((aaaa,,,,dddd))))))))is ttttrrrruuuueeee.  Returns the number of items removed.  ffffnnnn points to
  476.      a user-defined tester function which must have prototype:
  477.  
  478.  
  479.  
  480.  
  481.  
  482.                  bool yourTester(const_reference a, void* d);
  483.  
  484.  
  485.      Client data may be passed through parameter dddd.
  486.  
  487.               void
  488.           rrrreeeessssiiiizzzzeeee(size_type sz);
  489.  
  490.  
  491.      Changes the capacity of sssseeeellllffff by creating a new hashed multimap with a
  492.      capacity of  sssszzzz .  rrrreeeessssiiiizzzzeeee then copies every element of sssseeeellllffff into the new
  493.      container and finally swaps the internal representation of the new
  494.      container with sssseeeellllffff.
  495.  
  496.               rw_hashmultimap<K,T,H,EQ>&
  497.           ssssttttdddd();
  498.           const rw_hashmultimap<K,T,H,EQ>&
  499.           ssssttttdddd() const;
  500.  
  501.  
  502.      Returns a reference to the underlying C++-standard collection that serves
  503.      as the implementation for self.  This reference may be used freely,
  504.      providing accessibility to the C++-standard interface and
  505.      interoperability with other software components that make use of the
  506.      C++-standard collections.
  507.  
  508. RRRReeeellllaaaatttteeeedddd GGGGlllloooobbbbaaaallll OOOOppppeeeerrrraaaattttoooorrrrssss
  509.               RWvostream&
  510.           ooooppppeeeerrrraaaattttoooorrrr<<<<<<<<(RWvostream& strm,
  511.                  const RWTValHashMultiMap<K,T,H,EQ>& coll);
  512.           RWFile&
  513.           ooooppppeeeerrrraaaattttoooorrrr<<<<<<<<(RWFile& strm,
  514.                  const RWTValHashMultiMap<K,T,H,EQ>& coll);
  515.  
  516.  
  517.      Saves the collection ccccoooollllllll onto the output stream ssssttttrrrrmmmm, or a reference to
  518.      it if it has already been saved.
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.                                                                         PPPPaaaaggggeeee 8888
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532. RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp((((3333CCCC++++++++))))                              RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp((((3333CCCC++++++++))))
  533.  
  534.  
  535.  
  536.               RWvistream&
  537.           ooooppppeeeerrrraaaattttoooorrrr>>>>>>>>(RWvistream& strm,
  538.                  RWTValHashMultiMap<K,T,H,EQ>& coll);
  539.           RWFile&
  540.           ooooppppeeeerrrraaaattttoooorrrr>>>>>>>>(RWFile& strm, RWTValHashMultiMap<K,T,H,EQ>& coll);
  541.  
  542.  
  543.      Restores the contents of the collection ccccoooollllllll from the input stream ssssttttrrrrmmmm.
  544.  
  545.               RWvistream&
  546.           ooooppppeeeerrrraaaattttoooorrrr>>>>>>>>(RWvistream& strm, RWTValHashMultiMap<K,T,H,EQ>*& p);
  547.           RWFile&
  548.           ooooppppeeeerrrraaaattttoooorrrr>>>>>>>>(RWFile& strm, RWTValHashMultiMap<K,T,H,EQ>*& p);
  549.  
  550.  
  551.      Looks at the next object on the input stream ssssttttrrrrmmmm and either creates a
  552.      new collection off the heap and sets pppp to point to it, or sets pppp to point
  553.      to a previously read instance.  If a collection is created off the heap,
  554.      then you are responsible for deleting it.
  555.  
  556.  
  557.  
  558.  
  559.  
  560.  
  561.  
  562.  
  563.  
  564.  
  565.  
  566.  
  567.  
  568.  
  569.  
  570.  
  571.  
  572.  
  573.  
  574.  
  575.  
  576.  
  577.  
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.                                                                         PPPPaaaaggggeeee 9999
  592.  
  593.  
  594.  
  595.